<?php


namespace app\api\controller;

use app\admin\model\Mine;
use Firebase\JWT\JWT;

class Wechat extends Base
{
    protected $noNeedLogin = ['wechat'];

    //登录
    /**
     * 获取code得到token
     */
    public function wechat(){
        //接收小程序传值
        $code = $this->request->post('code','');

        //微信接口配置参数
        $appid = "wxce6650772a635484";
        $appsecret = "ca40b7f2147b8d246b60b07e2cc69df5";
        //生成openid
        $uri =  "https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$appsecret}&js_code={$code}&grant_type=authorization_code";
        $res = json_decode(file_get_contents($uri),true);

        if (empty($res['openid'])){
            $this->error($res);
        }
        $wxuser =  new Mine();
        $data = $wxuser->where('openid','=',$res['openid'])->find();
        //halt($data);
        if (empty($data)){
            $wxuser->save(['openid'=>$res['openid']]);
        }
        $jwtContent = [
            // 签发人，这里采用当前站点域名
            'iss' => request()->domain(),
            // 签发时间，当前时间戳
            'iat' => time(),
            // 到期时间，1天后
            'exp' => time() + 86400,
            // 自定义数据
            'data' => [
                'openid' => $res['openid'],
            ]
        ];
        // 自定义 key，用于加密 token，只保存在服务端，不可泄漏。
        $key = 'iwsojfiowejgiroegnioamr';
        // 使用 HS256 算法，生成 token 。
        $token = JWT::encode($jwtContent, $key, 'HS256');
        // 打印输出
        $this->success('获取成功',$token);

    }

}